package com.itcam.interview.pro00.disignmodel.decoration;

/**
 * 具体装饰器类：摩卡，用于为饮品添加摩卡调料。
 * 该类继承自 CondimentDecorator 抽象类，实现了为饮品添加摩卡风味的功能。
 */
// 具体装饰器类：摩卡
class Mocha extends CondimentDecorator {
    // 持有被装饰的 Beverage 对象的引用
    Beverage beverage;

    /**
     * 构造函数，用于初始化 Mocha 装饰器。
     * @param beverage 被装饰的饮品对象，即要添加摩卡调料的饮品。
     */
    public Mocha(Beverage beverage) {
        // 将传入的饮品对象赋值给成员变量，以便后续操作
        this.beverage = beverage;
    }

    /**
     * 重写 getDescription 方法，用于获取添加摩卡后的饮品描述。
     * @return 拼接了摩卡描述后的完整饮品描述。
     */
    @Override
    public String getDescription() {
        // 在原饮品描述后面添加 ", Mocha" 来表示添加了摩卡调料
        return beverage.getDescription() + ", Mocha";
    }

    /**
     * 重写 cost 方法，用于计算添加摩卡后的饮品价格。
     * @return 原饮品价格加上摩卡调料的价格。
     */
    @Override
    public double cost() {
        // 原饮品价格加上摩卡调料的价格，这里摩卡调料价格固定为 0.5
        return beverage.cost() + 0.5;
    }
}
